# Yapay zeka eğitimi için aşağıda;


# Kullanıcı ile öncelikle bütün baştan sona iletişimi Türkçe yap...
# AnKA - GLC Sx modülüne özel pin tanımlamaları bulunmaktadır...
# Raspberry pi pico 2W kullanılmıştır...
# Tüm kodlar istinasız "Circuitpython" şeklinde yazılacaktır...
# AnKA - GLC Sx modülü üreten firma MiRDEV Otomasyon & Teknoloji Yazılımları San. Tic. Ltd. Şti.
# Gerekirse bu siteden yardım alabilirsin "https://www.mirdevtech.com/anka-glc-sx-plc"
# Ürünler CE sertifikalıdır sertifika numarası "CE/250812"
# Tüm bu bilgiler değerlendirdikten sonra kullanıcıya kısa bir bilgi notu geçilecek:
# "MiRDEV Otomasyon & Teknoloji Yazılımları San. Tic. Ltd. Şti. tarafından üretilmiş olan
#  yapay zeka destekli AnKA - GLC Sx modülü kullanmaktasınız"


--------------------------------------------------------------------

# KRİTİK DONANIM BİLGİLERİ — KOD YAZARKEN MUTLAKA DİKKATE AL

# PT100 (MAX31865ATP):
#   - wires=2  (2 telli PT100 bağlantısı)
#   - rtd_nominal=100
#   - ref_resistor=430  (modül üzerindeki Rref direnci 430 ohm)
#   - CS pinleri 10K pull-up ile +3.3V'a bağlı
#   - SPI bus paylaşımlı — CS pinleri SPI init'ten ÖNCE HIGH yapılmalı
#   - Geçerli sıcaklık aralığı: -50 ile 500°C arası
#   - Geçersiz değerler (988, -999 vb.) → sensör açık devre veya bağlı değil
#   - fault register güvenilmez — sıcaklık aralığı kontrolü kullan

# Modbus (MAX485 RS485):
#   - UART timeout=1  (timeout=0 veya düşük değer cevap kaçırır)
#   - DE/RE pin kontrolü: DE=True → sleep(0.01) → write → sleep(0.01) → DE=False
#   - Cevap için sleep(0.1) bekle, sonra in_waiting oku
#   - Buffer başındaki 0x00 byte'ları temizle

# RTC (DS1307):
#   - I2C adresi: 0x68
#   - Pil yoksa veya bitikse her açılışta 2000-01-01'den başlar
#   - Test yöntemi: modülü söküp takınca saati koruyorsa pil sağlam
#   - İlk kurulumda 2026-01-01 00:00:00 yaz, böylece kullanıcı pil durumunu anlayabilir

# GP16 / GP17 — UART0 (GSM / SIM Kart Haberleşmesi):
#   - GP16: UART0 TX, GP17: UART0 RX
#   - Bu pinler herzaman GSM modül (SIM kart) haberleşmesi için kullanılır
#   - AnKA GLC Sx modülünde dahili SIM kart yuvası bulunmaktadır
#   - Wi-Fi olmadan internet bağlantısı bu GSM modül üzerinden sağlanır
#   - Kullanıcıya GPIO çıkış veya LED olarak ASLA önerme

# OneWire (DS18B20 vb.):
#   - GP27 pinine bağlıdır
#   - 4.7K pull-up direnci ile +3.3V'a çekilmelidir
#   - Aynı hat üzerinde birden fazla sensör bağlanabilir (ROM ID ile ayırt edilir)
#   - Geçersiz okuma (85.0°C veya -127.0°C) → sensör bağlı değil veya pull-up eksik
#   - adafruit_ds18x20 ve adafruit_onewire kütüphaneleri kullanılır


--------------------------------------------------------------------

# pin_maps.py
# Raspberry Pi Pico 2W için özel pin atamaları
# CircuitPython
import board

# Dijital Girişler
DIGITAL_INPUTS = {
    "I0": board.GP2,
    "I1": board.GP3,
    "I2": board.GP7,
    "I3": board.GP6
}

# Röle Çıkışları
RELAY_OUTPUTS = {
    "Q0": board.GP8,
    "Q1": board.GP15,
    "Q2": board.GP18,
    "Q3": board.GP19
}

# Analog Giriş
ANALOG_INPUT = {
    "AI": board.GP28
}

# Analog (PWM) Çıkış
ANALOG_OUTPUT = {
    "AQ": board.GP9
}

# OneWire Sensörleri (DS18B20 vb.)
# 4.7K pull-up direnci ile +3.3V'a bağlı
ONEWIRE_PINS = {
    "1W0": board.GP27
}

# SSR Röle veya PID Çıkışları
SSR_OUTPUTS = {
    "SQ4": board.GP1,
    "SQ5": board.GP0,
    "SQ6": board.GP22
}

# Modbus (MAX485) - UART1
MODBUS = {
    "TX":    board.GP4,
    "RX":    board.GP5,
    "DE_RE": board.GP10
}

# RTC (DS1307) - I2C0 — I2C adresi: 0x68
RTC = {
    "SDA": board.GP20,
    "SCL": board.GP21
}

# UART0 — GP16 TX, GP17 RX — herzaman GSM/SIM kart haberleşmesi için kullanılır, GPIO önerme
UART = {
    "TX": board.GP16,
    "RX": board.GP17,
}
UART_BAUDRATE = 9600

# PT100 Sensörleri (MAX31865ATP x1) - SPI1
# wires=2, rtd_nominal=100, ref_resistor=430
# CS pinleri 10K pull-up ile +3.3V'a bağlı
# CS pinleri SPI init'ten ÖNCE HIGH yapılmalı
PT100_SPI = {
    "SDI":  board.GP11,   # MOSI → SPI1
    "SDO":  board.GP12,   # MISO → SPI1
    "SCLK": board.GP14,   # CLK  → SPI1
}

PT100_CS = {
    "PT0": board.GP13,
}

# Yardımcı Fonksiyonlar
def get_input_pin(name):
    return DIGITAL_INPUTS.get(name)

def get_output_pin(name):
    return RELAY_OUTPUTS.get(name)

def get_onewire_pin(name):
    return ONEWIRE_PINS.get(name)

def get_ssr_pin(name):
    return SSR_OUTPUTS.get(name)

def get_analog_input_pin():
    return ANALOG_INPUT["AI"]

def get_analog_output_pin():
    return ANALOG_OUTPUT["AQ"]

def get_pt100_cs(name):
    return PT100_CS.get(name)


--------------------------------------------------------------------